﻿using Cart.HoaDonSrv;
using Cart.NguoiDungSrv;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Cart
{
    public partial class ThongKeHoaDon : VdcInc.vdcAJAXPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            #region check quyen
            var user = Session["nsd"] as NguoiDung;
            if (user != null)
            {
                if (user.Quyen != 1) ScriptManager.RegisterStartupScript(this, this.GetType(), "Redit", "alert('Không có quyền truy cập !'); window.location='" + Request.ApplicationPath + "TrangChu.aspx';", true);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Redit", "alert('Không có quyền truy cập !'); window.location='" + Request.ApplicationPath + "TrangChu.aspx';", true);
            }

            #endregion check quyen
            using (var userService = new HoaDonSrv.HoaDonServiceClient())
            {
                long tongdoanhthu = 0;
                var lst = userService.DanhSachHoaDon(0);
                foreach (var hoadon in lst)
                {
                    if (hoadon.TrangThai == 2 || hoadon.TrangThai == 1) tongdoanhthu += hoadon.TongTien;
                }
                lbTongDoanhThu.InnerText = tongdoanhthu.ToString();
                RptParent.DataSource = lst;
                RptParent.DataBind();
            }
        }
        public Dictionary<string, string> AddDataSource()
        {
            Dictionary<string, string> list = new Dictionary<string, string>();
            list.Add("0", "Chưa xuất hàng");
            list.Add("1", "Đã xuất hàng - Chưa thanh toán");
            list.Add("2", "Đã xuất hàng - Đã thanh toán");
            return list;
        }
        public string vThayDoiTrangThai(string strHoaDonid, string strTrangThai)
        {
            var hoadonmodel = new HoaDon();
            
            if (strHoaDonid != null && strHoaDonid != "" && strTrangThai != null && strTrangThai != "")
            {
                hoadonmodel.Id = Convert.ToInt64(strHoaDonid);
                hoadonmodel.TrangThai = Convert.ToInt32(strTrangThai);

                using (var userService = new HoaDonSrv.HoaDonServiceClient())
                {
                    bool check = true;
                    bool checkton = true;
                    var lsthd = userService.DanhSachHoaDon(0);
                    foreach (var hoadon in lsthd)
                    {
                        if (hoadon.Id == Convert.ToInt64(strHoaDonid)) {
                            if (Convert.ToInt32(strTrangThai) < hoadon.TrangThai)
                            {
                                check = false;
                            }
                            else{
                                if (hoadon.TrangThai == 0 && strTrangThai == "1" || hoadon.TrangThai == 0 && strTrangThai == "2")
                                {
                                    var listchitiet = hoadon.lstChiTiet;
                                    foreach (var chitiet in listchitiet)
                                    { 
                                        using (var spService = new SanPhamSrv.SanPhamServiceClient())
                                        {
                                            var sanphamkho = spService.ChiTietSanPham(chitiet.SanPhamId);
                                            if (sanphamkho != null)
                                            {
                                                if (sanphamkho.SoLuong < chitiet.SoLuong) checkton = false;
                                            }
                                            else checkton = false;
                                                
                                        }
                                    }
                                    if (check == true && check == true) hoadonmodel.lstChiTiet = listchitiet;
                                }
                            }
                            break;
                        }

                    }
                    if (check == true)
                    {
                        if (checkton == true)
                        {   
                            var result = userService.CapNhatHoaDon(hoadonmodel);
                            long tongdoanhthu = 0;
                            var lst = userService.DanhSachHoaDon(0);
                            foreach (var hoadon1 in lst)
                            {
                                if (hoadon1.TrangThai == 2 || hoadon1.TrangThai == 1) tongdoanhthu += hoadon1.TongTien;
                            }
                            lbTongDoanhThu.InnerText = tongdoanhthu.ToString();
                            UpdatePanel("cbpTongTien");

                            return "Cập nhật " + result;
                        }
                        else return "Số lượng trong kho không đủ hoặc sản phẩm không có trong kho !";
                    }
                    //Không được phép thay đổi
                    else return "Cập nhật thất bại";
                    
                }
            }
            else {
                //Không lấy được dữ liệu
                return "Không lấy được dữ liệu hóa đơn.";
            }
        }


        public string vXoaHoaDon(string strHoaDonId)
        {
            var hoadonmodel = new HoaDon();

            if (strHoaDonId != null && strHoaDonId != "")
            {
                hoadonmodel.Id = Convert.ToInt64(strHoaDonId);
                hoadonmodel.TrangThai = 3;

                using (var userService = new HoaDonSrv.HoaDonServiceClient())
                {
                    bool check = false;
                    var lsthd = userService.DanhSachHoaDon(0);
                    foreach (var hoadon in lsthd)
                    {
                        if (hoadon.Id == Convert.ToInt64(strHoaDonId))
                        {
                            if (hoadon.TrangThai == 0) check = true;
                        }
                    }
                    if (check == true)
                    {

                        var result = userService.CapNhatHoaDon(hoadonmodel);
                        return "Xóa " + result;
                    }
                    else return "Phiếu đã xuất hàng. Không thể xóa";

                }
            }
            else
            {
                return "Không lấy được dữ liệu hóa đơn. Xóa thất bại";
            }
        }
    }
}